#include<func.h>

void get_salt(char *salt,char *passwd);
bool checkpwd(const char *name,const char *key);

bool checkpwd(const char *name,const char *key){//登录验证
    struct spwd *sp=NULL;//储存取出的密文
    char salt[128]={0};

    sp=getspnam(name);//取出密文
    if(sp==NULL){//找不到对应用户名
        printf("the user don't exist!\n");
        return false;
    }
    get_salt(salt,sp->sp_pwdp);//取盐值
    char *encrypted=crypt(key,salt);
    if(strcmp(sp->sp_pwdp,encrypted)==0){//验证对比
        return true;//验证成功
    }
    else
        return false;//验证失败
}
void get_salt(char *salt,char *passwd){//取盐值
    int i,j;
    for(i=0,j=0;j<3;i++){
        if(passwd[i]=='$')
            j++;
    }
    strncpy(salt,passwd,i);
}